home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc
- {
- import mx.messaging.Producer;
- import mx.messaging.events.MessageEvent;
- import mx.messaging.events.MessageFaultEvent;
- import mx.messaging.messages.AcknowledgeMessage;
- import mx.messaging.messages.ErrorMessage;
- import mx.messaging.messages.IMessage;
-
- public class AsyncRequest extends Producer
- {
- private var _pendingRequests:Object;
-
- public function AsyncRequest()
- {
- _pendingRequests = {};
- super();
- }
-
- override public function fault(param1:ErrorMessage, param2:IMessage) : void
- {
- var _loc3_:String = null;
- var _loc4_:IResponder = null;
- super.fault(param1,param2);
- _loc3_ = param2.messageId;
- _loc4_ = IResponder(_pendingRequests[_loc3_]);
- if(_loc4_)
- {
- delete _pendingRequests[_loc3_];
- _loc4_.fault(MessageFaultEvent.createEvent(param1));
- }
- }
-
- override public function acknowledge(param1:AcknowledgeMessage, param2:IMessage) : void
- {
- var _loc3_:Boolean = false;
- var _loc4_:String = null;
- var _loc5_:IResponder = null;
- _loc3_ = Boolean(param1.headers[AcknowledgeMessage.ERROR_HINT_HEADER]);
- super.acknowledge(param1,param2);
- if(!_loc3_)
- {
- _loc4_ = param1.correlationId;
- _loc5_ = IResponder(_pendingRequests[_loc4_]);
- if(_loc5_)
- {
- delete _pendingRequests[_loc4_];
- _loc5_.result(MessageEvent.createEvent(MessageEvent.RESULT,param1));
- }
- }
- }
-
- public function invoke(param1:IMessage, param2:IResponder) : void
- {
- _pendingRequests[param1.messageId] = param2;
- send(param1);
- }
- }
- }
-
-